#pragma once
#include <android/log.h>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}
namespace codec {
class VideoCodec {
 public:
  bool init(AVCodecParameters* codec_params);
  void close();
  bool sendPacket(AVPacket* packet);
  AVFrame* receiveFrame();
  void flush() {
    if (codec_ctx_) {
      avcodec_flush_buffers(codec_ctx_);  // FFmpeg API刷新解码器
    }
  }

 private:
  AVCodecContext* codec_ctx_ = nullptr;
  const AVCodec* codec_ = nullptr;
  AVBufferRef* hw_device_ctx_ = nullptr;
};
}  // namespace codec